// pages/goos_detail/goos_detail.js
/* 
  1.点击加入购物车
    1.先绑定点击事件
    2.获取缓存中的购物车数据 数组格式
    3.先判断当前商品是否已经存在 购物车
      1.已存在商品数据 执行购物车数量++ 重新把购物车数组 填充回缓存中
      2.不存在 直接给数组添加一个新元素 带上购买数量属性 num 重新把购物车数组填充回缓存中
    4.弹出用户提示
*/
/* 商品收藏
  1.页面onShow的时候，加载缓存中商品的收藏数据
  2.判断当前商品是否被收藏
    是 改变图标
    不是 不做操作
  3.点击商品收藏按钮
    1.判断该商品是否存在缓存
    2.已经存在 把该商品删除
    3.没存在 存入缓存
*/
import {request} from '../../request/index.js';
Page({
  /**
   * 页面的初始数据
   */
  data: {
    goosDetailList:{},
    // 商品是否被收藏过
    iscollect:false
  },
  // 商品数据
  goosInfo:{},
  /**
   * 生命周期函数--监听页面加载
   */
  onShow: function () {
    // 获取当前页面栈
    let pages = getCurrentPages();
    let currentPage= pages[pages.length-1];
    let {options} = currentPage;

    // 获取商品Id
    const goods_id = options;
    // 获取商品详情，并渲染
    this.getGoosDetail(goods_id);
  },
  // 获取商品详情数据
  getGoosDetail(goods_id){
    request({url:"/goods/detail",data:(goods_id)}).then(res =>{
      this.goosInfo = res;
      /* 收藏数据开始 */
      // 1.获取缓存中的数组
      let collect = wx.getStorageSync('collect') ||[];
      // 判断当前该商品是否被收藏
      let iscollect = collect.some(v=>v.goods_id ===this.goosInfo.goods_id);
      /* 收藏数据结束 */
      this.setData({
        iscollect,
        goosDetailList:{
          pics:res.pics,
          goods_price:res.goods_price,
          goods_name:res.goods_name,
          // iphone部分手机 不识别webp图片格式
          goods_introduce:res.goods_introduce
        }
      })
    })
  },
  // 点击轮播图放大预览
  handlePrebewImage(e){
    console.log(e)
    // 1.构造要预览的图片数组
    const urls = this.goosInfo.pics.map(v=>v.pics_mid);
    // 2.获取点击的索引
    const current = e.currentTarget.dataset.url;
    console.log(current)
    wx.previewImage({
      current, // 当前显示图片的http链接
      urls// 需要预览的图片http链接列表
    });
  },
  // 点击加入购物车
  handleCartAdd(e){
    // 1.获取本地缓存数据，没有则赋值[]
    let cart = wx.getStorageSync("cart") || [];
    // 2.判断 商品对象是否存在 购物车数组中     第一次相同的索引
    let index = cart.findIndex(v => v.goods_id===this.goosInfo.goods_id);
    if(index === -1){
      // 3.不存在 第一次添加
      this.goosInfo.num = 1;
      this.goosInfo.checked = true;
      cart.push(this.goosInfo);
    }else{
      // 3.已经存在， 执行num++
      cart[index].num++;
    }
    // 4. 把购物车重新添加回缓存中
    wx.setStorageSync("cart",cart);
    // 5.提示
    wx.showToast({
      title: '加入成功',
      icon: 'success',
      // 防止用户重复点击 有1.5s的反应时间
      mask:true
    })
  },
  // 点击收藏
  handleCollect(e){
    let iscollect = false;
    // 1.获取缓存中的商品数组
    let collect = wx.getStorageSync('collect') ||[];
    // 2.判断该商品是否被收藏过
    let index = collect.findIndex(v =>v.goods_id===this.goosInfo.goods_id);
    // 3.当Index != -1
    if(index!=-1){
      collect.splice(index,1);
      wx.showToast({
        title:'取消成功',
        icon:'success',
        mask:true
      })
    }else{
      collect.push(this.goosInfo);
      iscollect = true;
      wx.showToast({
        title:'收藏成功',
        icon:'success',
        mask:true
      })
    }
    // 4.把数组存入到缓存中
    wx.setStorageSync("collect",collect);
    // 5。修改图标
    this.setData({iscollect});
    
  },
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },
  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },
})